// vuex的权限模块
import { constantRoutes, asyncRoutes } from '@/router'
// vuex中的permission模块用来存放当前的 静态路由 + 当前用户的 权限路由
const state = {
  routes: []
}
const mutations = {
  setRoutes(state, asyncRoutes) {
    // 我希望在这里封装一个 muataions
    // 专门将静态路由, 和有权限的动态路由合并
    // 交给 state 储存
    // 用来渲染菜单, 而不是原来的所有菜单都显示出来
    const newRoutes = [...constantRoutes, ...asyncRoutes]
    state.routes = newRoutes
  }
}
const actions = {
  filterRoutes({ commit }, menus) {
    // 参数1 store 本身(context)
    // 参数2 外部调用时传入的数据,这里指用户拥有的 menus 权限数组
    const routes = asyncRoutes.filter(item => menus.indexOf(item.name) > -1)
    // 解决菜单问题, 将筛选过后的动态路由交给 mutations
    commit('setRoutes', routes)
    return routes
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
